ヘディングセンサーをつくる


オーナーが少しでも操船しやすくするためにヘディングセンサーを作成し取り付けた。
マグネットセンサーハニーウェルHMC5883L、マイクロコントローラにはArduino Mini、電源にはDC-DCコンバータRECOMのR-78Eを選択した。それらをユニバーサル基板上に配置する。X,Y,Zそれぞれの磁力を出力するだけのプログラムを作成し、左の確認用のArduinoのシリアルモニタで読む。キャリブレーションはセンサーを近くの駐車場に持って行き、車がいないエリアを選んでセンサーを2回転させる。シリアルモニタに得られた数値をエクセルに貼り付けてオフセットを決める。
エクセルに貼り付けたXYのプロット。オフセットはXが0、Yが-200ぐらい。アークタンジェントで得られた角度が磁針方位となる。今考えるとボートで使用するのでより安価な2軸のマグネティックセンサーでよかった。
Arduino MiniにはUSBコンバータを介してプログラムをロードする。
磁針方位をNMEA0183フォーマットで出力する。方位が356度の時、出力は以下のようになる。

$HCHDM,356.0,M<CR><LF>

HCは「ヘディング-マグネティック・コンパス」、HDMは「ヘディング-マグネティック」、Mは磁針方位であることを表す。プラスチックケースに両面テープで固定。左の小さいボードがマグネットセンサー。
Lowrance HDS8のシリアルポートCOM2に接続するが画面上でヘディングが変化しない。センサー側はTTL、Lowrance側はRS232なので変換が必要らしい。Lowrance HDS8には2つのCOMポートがあり、COM1には国際VHF無線機GX1100が接続されている。
船長が苦戦している間、オーナーはマリーナの岸壁でイイダコ釣り。
TTL・RS232の変換ボードを組み込む(右下の緑の基板)。しかし画面上でヘディングが変化しない。省略していたチェックサムを入れると画面上にてヘディングが変化するのがわかった。どこかに省略してもよい、と書いてあったと思うが...Lowranceに接続するには省略できないらしい。チェックサムを入れると出力は以下のようになる。

$HCHDM,356.0,M*29<CR><LF>

チェックサムは$と*で囲まれたすべてのキャラクター(カンマとピリオドも)をASCIIコード16進数に変換して最初から順番にXOR(エクスクルーシブオア)を計算する。^をXORとすると、

48^43^48^44^4D^2C^33^35^36^2E^30^2C^4D=29

ケーブル、コネクターはバスコークで固定。Lowranceから信号を受信することはないので受信用のケーブルは外した。右上の黒いボックスがDC-DCコンバータ。3端子レギュレータの使用も考えたが、発熱が気になるのでDC-DCコンバータにした。今考えるとDC-DCコンバータは磁界を発生させる可能性があり、部品選定としては誤っていたかもしれない。
マリーナS氏が見守る中テスト。ヘディングセンサーを向けた方向がLowranceの画面上にくるようになった(チャートの設定が「Heading up」の時)。カディ内に完成したヘディングセンサーを両面テープで固定した。
プラスチモのコンパスが220度を指すとき、LMF-400に表示されたヘディングは210度を指している。10度の偏差。

LMF-400のヘディングの表示は真方位らしい。HDS-8の設定でMagnetic Deviationをオートからマニュアルで0度に設定するとプラスチモとLMF-400の差は3度となった。3度の差は取り付けによるものと思われる...